"""
面向对象案例分析: 数据分析方案,业务逻辑代码
需求分析:
1.读取数据:         设计FileReader类
2.封装数据对象        设计数据封装类
3.计算数据对象        对数据对象进行逻辑计算
4.pyecharts绘图       以面向对象思想重新认识pyecharts
"""
from pyecharts.globals import ThemeType

from pycode.黑马程序员.可视化案例.全国疫情地图构建 import data_dict

"""
实现步骤:
1.设计一个类,完成对数据的封装
2.设计一个抽象类,定义文件读取相关功能,并使用子类实现具体功能
3.读取文件,生成数据对象
4.进行数据需求逻辑计算(计算每一天的销售额)
5.通过pyecharts进行图形绘制
"""

from file_define import TextFileReader,JsonFileReader
from data_define import Record
from pyecharts.charts import Bar
from pyecharts.options import *

    # h获取数据
text_file_reader = TextFileReader("D:/第13章资料/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("D:/第13章资料/2011年2月销售数据JSON.txt")
text_list = text_file_reader.read_data()
json_list = json_file_reader.read_data()

# 将两个文件处理后产生的对象列表整合
data_list = text_list + json_list
data_dict = {}
for record in data_list:
    if record.data in data_dict.keys():
        data_dict[record.data] += record.money
    else:
        data_dict[record.data] = record.money

print(data_dict)
#生成柱状图

bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))
bar.add_xaxis(list(data_dict.keys()))       #添加x轴的数据
bar.add_yaxis("销售额", list(data_dict.values()),label_opts=LabelOpts(is_show=False))  #添加y轴数据
bar.set_global_opts(
    title_opts=TitleOpts(title="每日销售额")
)

bar.render("每日销售额柱状图.html")

